import datetime
from typing import Optional, Union, List

from pydantic import Field

from common_bind_service.common.base.db_model import BaseModel, DBModel


class ProductInfo(BaseModel):
    mark: str  # 电芯码
    slot_no: str  # 通道号
    ng_code: Optional[List[str]] = Field(default_factory=list)   # ng代码 ["E0005","E0010"]
    is_ng: Optional[int] = 0  # 0 合格, 1 不合格, 先兼容之前的数据, 后续确认了, 把optional去掉


class ContainerStatus(DBModel):
    """存储容器当前情况"""

    # 下面几个字段记录一些最近的操作信息
    last_update_time: Optional[datetime.datetime] = None  # 最后的更新时间
    last_operate: str = ''  # 容器最后的操作  组盘/解盘/剔除ng码操作
    last_equip_code: str = '' # 最后的操作设备编码
    last_upperpc_code: str = ''  # 最后操作的上位机编码

    # unit: str  # 容器单位  当前是托 暂时不考虑这个了
    container_mark: str  # 容器编码
    count: int  # 容器当前数量
    product_list: List[ProductInfo]
    status: int = 0  # 容器状态, 预留字段 0 正常 其他数字暂时没有








